//
// ----------------------------------------------------------------------------
// 文件： ArrayListStruct.h
// 日期： 2019年03月01日
// 功能： 执行模块指令数组列表数据结构定义文件
// 版本： v1.0
// 作者： 谈新
// 邮件： tanxin@smg.cn
// ----------------------------------------------------------------------------
//
#ifndef ARRAYLISTSTRUCT_H_INCLUDE
#define ARRAYLISTSTRUCT_H_INCLUDE
#define CLIENTNAME_SIZE 20

typedef struct _ITEMDATA
{
    int             fd;                 // 客户端socket
    char            name[300];          // 客户端名称
    int             logined;            // 客户端登陆状态
    char            ip[20];             // 客户端IP地址
    unsigned short  port;               // 客户端port端口
    double          activetime;         // 客户端激活时间
}   ITEMDATA;

typedef struct _ARRAYLIST
{
    #if defined(LINUX)
    pthread_mutex_t hMutex;             // 列表访问锁
    #else 
    HANDLE          hMutex;
    #endif
    ITEMDATA        *data;              // 列表的数据内容
    size_t          num;                // 列表的元素计数器
    size_t          maxnum;             // 列表的元素最大值
}   ARRAYLIST;

//用于记录哪些客户端已登录
typedef struct _NAMELIST
{
#if defined(LINUX)
	pthread_mutex_t hMutex;             // 列表访问锁
#else 
	HANDLE          hMutex;
#endif 
	char**          data;              // 列表的数据内容
	size_t          num;               // 列表的元素计数器
	size_t          maxnum;            // 列表的元素最大值
}   NAMELIST;

#endif 

